package controllers

import (
	"class/models"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	"log"
)

type MainController struct {
	beego.Controller
}

func (c *MainController) Get() {
	/*//向数据库插入数据
	//1.有ORM对象
	o:=orm.NewOrm()
	//2.有一个要插入数据的结构体对象
	user:=models.User{}
	//3.对结构体赋值
	user.Name="Vacancy"
	user.Pwd="kk123456yy"
	//4.插入数据
	_,err:=o.Insert(&user)
	if err != nil {
		beego.Info("插入失败",err)
		return
	}*/
	/*//查询数据库里面数据
		//1.有ORM对象
		o:=orm.NewOrm()
		//2.查询对象
		user:=models.User{}
		//3.指定查询对象字段值
		user.Name="Vacancy"//根据name查询
		//user.Id=2        //根据ID查询
		//4.查询
		//err:=o.Read(&user)
		err:=o.Read(&user,"name")
		if err != nil {
			beego.Info("查询失败",err)
			return
		}
		beego.Info("查询成功",user)
	}*/
	/*func (c *MainController) Get() {
		//1.有ORM对象
		o:=orm.NewOrm()
		//2.有一个要插入数据的结构体对象
		user:=models.User{}
		//3.对结构体赋值
		user.Name="qq"
		user.Pwd="246810"
		//4.插入数据
		_,err:=o.Insert(&user)
		if err != nil {
			beego.Info("插入失败",err)
			return
		}
		c.Data["data"]="今天中午吃饺子"
		c.TplName = "test.html"
	}*/
	/*//1.要有ORM对象
	o:=orm.NewOrm()
	//2.需要更新的结构体对象
	user:=models.User{}
	//3.查到需要更新的数据
	user.Id=1
	err:=o.Read(&user)

	//4.给数据重新赋值
	if err == nil {
		user.Name="最新的最新的用户名"
		//user.Pwd="7893210"
		beego.Info("更新成功")
	}
	//5.更新
	_,err=o.Update(&user)
	if err != nil {
		beego.Info("更新失败",err)
		return
	}*/
	//1.有ORM对象
	/*o:=orm.NewOrm()
	//2.删除的对象
	user:=models.User{}
	//3.指定删除那一条数据
	user.Id=3
	//4.删除数据
	_,err:=o.Delete(&user)
	if err != nil {
		beego.Info("删除错误",err)
		return
	}else{
		beego.Info("删除成功！")
	}
	c.Data["data"]="今天中午吃饺子"
	c.TplName = "test.html"*/
	c.TplName="register.html"
}


func (c *MainController) Post() {   //第二,重写post方法
	//1.拿到数据
	userName:=c.GetString("userName")
	pwd:=c.GetString("pwd")
	//2.对数据进行校验
	if userName == "" || pwd == "" {
		beego.Info("数据不能为空")
		c.Redirect("/register",302)
		return
	}
	//3.插入数据库
	o:=orm.NewOrm()
	user:=models.User{}
	user.Name=userName
	user.Pwd=pwd
	_,err:=o.Insert(&user)
	if err != nil {
		beego.Info("插入数据失败")
		c.Redirect("/register",302)
		return
	}
	//4.退回登录界面
	c.TplName="login.html"
	c.Redirect("/login",302)
	//c.Ctx.WriteString("注册成功")
}
func (c*MainController) ShowLogin() {
	c.TplName="login.html"
}

//登录业务处理
func (c *MainController) HandleLogin() {
	//c.Ctx.WriteString("这是登陆的post请求")
	//1.拿到数据
	userName:=c.GetString("userName")
	pwd:=c.GetString("pwd")
	beego.Info("成功获取用户数据")
	//2.判断数据是否合法
	if userName == ""||pwd == "" {
		beego.Info("输入数据不合法")
		c.TplName="login.html"
		return
	}
	//3.查询账号密码是否正确
	o:=orm.NewOrm()
	user:=models.User{}

	user.Name=userName
	user.Pwd=pwd
	err:=o.Read(&user,"Name","pwd")
	if err != nil {
		log.Print("用户名或密码不正确")
		c.TplName="login.html"
		return
	}
	//4.跳转
	beego.Info("本次登录成功")
	c.Ctx.WriteString("登录成功，欢迎回来！")
	//c.Redirect("/index",302)
}
//显示首页内容
func (c *MainController) ShowIndex() {
	c.TplName="index.tpl"
}